package com.fy.proj3_deepseek_api.util;

import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class FileUtil {

    /**
     * 读取Markdown文件内容
     * @param file 上传的Markdown文件
     * @return 文件内容字符串
     * @throws IOException 当文件读取失败时抛出
     */
    public static String readMarkdownFile(MultipartFile file) throws IOException {
        return new String(file.getBytes(), StandardCharsets.UTF_8);
    }

    /**
     * 检查文件是否为Markdown格式
     * @param file 要检查的文件
     * @return 如果是Markdown文件返回true，否则返回false
     */
    public static boolean isMarkdownFile(MultipartFile file) {
        if (file == null || file.isEmpty()) {
            return false;
        }
        
        // 检查文件类型
        String contentType = file.getContentType();
        if (contentType != null && contentType.equals("text/markdown")) {
            return true;
        }
        
        // 检查文件扩展名
        String originalFilename = file.getOriginalFilename();
        return originalFilename != null && originalFilename.toLowerCase().endsWith(".md");
    }

    /**
     * 生成安全的文件名（去除特殊字符）
     * @param originalFilename 原始文件名
     * @return 安全的文件名
     */
    public static String generateSafeFilename(String originalFilename) {
        if (originalFilename == null) {
            return "file";
        }
        // 去除文件名中的特殊字符，只保留字母、数字、点、下划线和连字符
        return originalFilename.replaceAll("[^a-zA-Z0-9._-]", "");
    }
}